package com.click369.mianshiqingbao.service;

import com.click369.mianshiqingbao.pojo.TopicBean;
import com.click369.mianshiqingbao.pojo.entity.PageResult;
import com.click369.mianshiqingbao.pojo.entity.TagTypeBean;
import com.click369.mianshiqingbao.pojo.entity.TopicTypeNumBean;

import java.util.List;

/**
 * 题目信息的业务访问接口
 */
public interface TopicService {
    /**
     * 条件分页查询题目信息列表
     * @return 分页查询信息的封装类对象
     */
    public PageResult findPage(TopicBean topicbean, int pageNum, int pageSize);
    /**
     * 增加题目信息
     * @param topicbean 题目信息对象
     */
    public void add(TopicBean topicbean);
    /**
     * 根据ID获取题目信息对象
     * @param id 题目信息的id
     * @return 题目信息对象
     */
    public TopicBean findOne(Long id);
    /**
     * 修改题目信息
     * @param topicbean 题目信息对象
     */
    public void update(TopicBean topicbean);
    /**
     * 批量删除题目信息
     * @param ids 批量删除题目信息的id集合
     */
    public void delete(Long ids[]);
    /**
     * 获取所选择的一级分类对应的阅读次数最多的题目列表【10】
     * @param classifyId 当前用户所选择的一级分类ID
     * @return 阅读次数最多的题目列表
     */
    public List<TopicBean> getMostTopic(Integer classifyId);
    /**
     * 获取所选择的一级分类对应的最新题目列表【10】
     * @param classifyId 当前用户所选择的一级分类ID
     * @return 最新的题目列表
     */
    public List<TopicBean> getNewTopic(Integer classifyId);
    /**
     * 获取所选择的一级分类指定题型题目的列表
     * @param classifyId 当前用户所选择的一级分类ID
     * @param topicType 题目类型对应编号 ["1-单选","2-多选","3-判断","4-填空","5-问答"]
     * @return 指定题型题目的列表
     */
    public List<TopicBean> getTopicBeanList(Integer classifyId, String topicType);

    /**
     * 获取所选择的一级分类对应的各个题型题目的数量
     * @param classifyId 当前用户所选择的一级分类ID
     * @return 题目类型和个数的集合
     */
    public List<TopicTypeNumBean> getTopicTypeNumList(Integer classifyId);
    /**
     * 获取当前用户所选择的一级分类的阅读标签列表
     * @param userId 当前用户id
     * @param classifyId 当前用户所选择的一级分类ID
     * @return 当前用户所选择的一级分类的阅读标签列表
     */
    public List<TagTypeBean> getTagTypeBeanList(Long userId, Integer classifyId);
    /**
     * 获取当前用户所选择的一级分类得到已读题目列表
     * @param userId 当前用户id
     * @param classifyId 当前用户所选择的一级分类ID
     * @return 已读题目列表
     */
    public List<TopicBean> getReadTopicList(Long userId, Integer classifyId);
    /**
     * 获取所选择的一级分类指定阅读状态题目列表
     * @param userId 当前用户id
     * @param classifyId 当前用户所选择的一级分类ID
     * @param tagFlag 指定阅读状态 {"1-了解","2-掌握","3-熟练","4-精通"};
     * @return 指定阅读状态题目列表
     */
    public List<TopicBean> getReadTagTopicList(Long userId, Integer classifyId, String tagFlag);
    /**
     * 获取当前用户所选择的一级分类得到收藏题目列表
     * @param userId 当前用户id
     * @param classifyId 当前用户所选择的一级分类ID
     * @return 收藏题目列表
     */
    public List<TopicBean> getStoreTopicList(Long userId, Integer classifyId);
    /**
     * 获取当前用户Id和题目Id查询一个题目对象
     * @param topicId 题目Id
     * @return 题目对象
     */
    public TopicBean getTopicObject(Long topicId);
}
